home *** CD-ROM | disk | FTP | other *** search
-
-
-
- XXXXSSSSTTTTRRRR((((1111)))) XXXXSSSSTTTTRRRR((((1111))))
-
-
-
- NNNNAAAAMMMMEEEE
- xstr - extract strings from C programs to implement shared strings
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- xxxxssssttttrrrr [ ----vvvv ] [ [ ----cccc ] [ ---- ] [ file ]
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- _X_s_t_r maintains a file _s_t_r_i_n_g_s into which strings in component parts of a
- large program are hashed. These strings are replaced with references to
- this common area. This serves to implement shared constant strings, most
- useful if they are also read-only. The -v flag makes _x_s_t_r verbose.
-
- The command
-
- xxxxssssttttrrrr ----cccc name
-
- will extract the strings from the C source in name, replacing string
- references by expressions of the form (&xstr[number]) for some number.
- An appropriate declaration of _x_s_t_r is prepended to the file. The
- resulting C text is placed in the file _x._c, to then be compiled. The
- strings from this file are placed in the _s_t_r_i_n_g_s data base if they are
- not there already. Repeated strings and strings which are suffices of
- existing strings do not cause changes to the data base.
-
- After all components of a large program have been compiled a file _x_s._c
- declaring the common _x_s_t_r space can be created by a command of the form
-
- xxxxssssttttrrrr
-
- This _x_s._c file should then be compiled and loaded with the rest of the
- program. If possible, the array can be made read-only (shared) saving
- space and swap overhead.
-
- _X_s_t_r can also be used on a single file. A command
-
- xxxxssssttttrrrr name
-
- creates files _x._c and _x_s._c as before, without using or affecting any
- _s_t_r_i_n_g_s file in the same directory.
-
- It may be useful to run _x_s_t_r after the C preprocessor if any macro
- definitions yield strings or if there is conditional code which contains
- strings which may not, in fact, be needed. _X_s_t_r reads from its standard
- input when the argument `-' is given. An appropriate command sequence
- for running _x_s_t_r after the C preprocessor is:
-
- cccccccc ----EEEE name.c | xxxxssssttttrrrr ----cccc -
- cccccccc ----cccc x.c
- mmmmvvvv x.o name.o
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- XXXXSSSSTTTTRRRR((((1111)))) XXXXSSSSTTTTRRRR((((1111))))
-
-
-
- _X_s_t_r does not touch the file _s_t_r_i_n_g_s unless new items are added, thus
- _m_a_k_e can avoid remaking _x_s._o unless truly necessary.
-
- FFFFIIIILLLLEEEESSSS
- strings Data base of strings
- x.c Massaged C source
- xs.c C source for definition of array `xstr'
- /tmp/xs* Temp file when `xstr name' doesn't touch _s_t_r_i_n_g_s
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- mkstr(1)
-
- AAAAUUUUTTTTHHHHOOOORRRR
- William Joy
-
- BBBBUUUUGGGGSSSS
- If a string is a suffix of another string in the data base, but the
- shorter string is seen first by _x_s_t_r both strings will be placed in the
- data base, when just placing the longer one there will do.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-